// 菜单控制层
package controller

import (
	"github.com/gin-gonic/gin"
	"go-mvc-generator/code/model"
	"go-mvc-generator/code/service"
	"go-mvc-generator/result"
	"strconv"
)

type SysMenuController struct{}

// Get @Summary 根据ID获取菜单信息
// @Description 通过查询参数ID获取菜单的详细信息
// @Tags 菜单
// @Produce json
// @Param id query string true "菜单ID"
// @Success 200 {object} result.Result
// @Router /api/sys_menu/get [get]
func (ctl *SysMenuController) Get(c *gin.Context) {
	idStr := c.Query("id")
	id, _ := strconv.Atoi(idStr)
	sysMenu := service.GetSysMenuService.GetById(c, id)
	result.Success(c, sysMenu)
}

// Del @Summary 根据ID删除菜单信息
// @Description 根据ID删除指定的菜单
// @Tags 菜单
// @Produce json
// @Param id query int true "菜单ID"
// @Success 200 {object} result.Result
// @Router /api/sys_menu/del [get]
func (ctl *SysMenuController) Del(c *gin.Context) {
	idStr := c.Query("id")
	id, _ := strconv.Atoi(idStr)
	del := service.GetSysMenuService.DelById(c, id)
	result.Success(c, del)
}

// Page @Summary 分页查询菜单信息
// @Description 根据传入的分页参数和查询条件，分页查询菜单信息
// @Tags 菜单
// @Accept json
// @Produce json
// @Param page_num query int false "页码，默认为1"
// @Param page_size query int false "每页记录数，默认为10"
// @Param sysMenuQuery body entity.SysMenuQuery true  "查询条件"
// @Success 200 {object} result.Result
// @Router /api/sys_menu/page [post]
func (ctl *SysMenuController) Page(c *gin.Context) {
	pn := c.DefaultQuery("page_num", "1")
	ps := c.DefaultQuery("page_size", "10")
	// 转换参数
	pageNum, _ := strconv.Atoi(pn)
	pageSize, _ := strconv.Atoi(ps)
	var sysMenuQuery model.SysMenuQuery
	_ = c.ShouldBindJSON(&sysMenuQuery)
	pageInfo := service.GetSysMenuService.Page(c, pageNum, pageSize, sysMenuQuery)
	result.Success(c, pageInfo)
}
